"""
python fujian1_smoothAfterSpline.py
"""
import json
import os
import pandas as pd

# 定义输入和输出路径（相对路径）
input_dir = "./fujian/fujian1/cubic_spline/interpolation_output"
output_dir = "./fujian/fujian1/spline_then_smooth"

# 确保输出目录存在
os.makedirs(output_dir, exist_ok=True)

# 列出并打印 input_dir 中的文件个数和文件名
files = [f for f in os.listdir(input_dir) if f.endswith(".json")]
print(f"在目录 {input_dir} 中找到 {len(files)} 个文件：")
for f in files:
    print(f)

# 处理每一个 JSON 文件
for filename in files:
    input_path = os.path.join(input_dir, filename)
    
    # 读取 JSON 文件
    with open(input_path, 'r') as f:
        data = json.load(f)

    # 转换为 DataFrame
    df = pd.DataFrame(data)
    df['date'] = pd.to_datetime(df['date'])
    
    # 移动平均平滑（窗口大小设为2）
    df['moving_average'] = df['inventory'].rolling(window=2).mean()

    # 指数加权移动平均（α设为0.4）
    df['exponential_smoothing'] = df['inventory'].ewm(alpha=0.8).mean()

    # 选择平滑后的数据
    smooth_data = df[['date', 'exponential_smoothing']]
    
    # 使用 .loc 明确设置日期格式为 "YYYY-MM-DD"
    smooth_data.loc[:, 'date'] = smooth_data['date'].dt.strftime('%Y-%m-%d')

    # 转换为 JSON 格式
    smooth_json = smooth_data.rename(columns={'exponential_smoothing': 'inventory'}).to_json(orient='records', date_format='iso')
    smooth_data = json.loads(smooth_json)

    # 输出到新的 JSON 文件
    category_number = filename.split('category')[1].split('.')[0]
    print("category number is: ", category_number)
    output_filename = f"smoothAfterSpline_category{category_number}.json"
    output_path = os.path.join(output_dir, output_filename)

    with open(output_path, 'w') as f:
        json.dump(smooth_data, f, indent=4)

print("平滑处理完成，文件已输出到:", output_dir)
